Windows10のWSLでX11アプリケーションを実行してみた
はじめに
データアナリティクス事業本部の藤川です。
Windows 10向けに、WSL2のGUI対応(WSLg)のプレビューが始まりました。どんな拡張になるか楽しみです。
今回は、WSLg
のご紹介ではありません。オープンソースのX Server
で、WSL(WSL2でなくても構いません)に接続してみました。
ふと思い出したように、X Window System
を使ってみたくなりました。Windows 10環境のWSL(または、Docker)上でX11アプリケーションを実行してみましたので手順をご紹介します。
概要
- Windows 10環境のWSL(または、Docker)上でX11アプリケーションを実行します。
- X11アプリケーション(X Client)の画面(X Server)をWindows 10上に表示します。
X Server
にはオープンソースのVcXsrv
を使用します。
作業手順
次の通り、作業を進めます。
- WSLにX11をインストールします。
- WindowsにVcXsrvをインストールし、設定します。
- Windowsのファイヤーウォールを設定変更します。
構築方法(WSL)
X11をインストール
WSL
環境にX11
をインストールします。
sudo apt install x11-apps
構築方法(Windows)
VcXsrvをインストール
- SourceForge.netから
VcXsrv
をダウンロードします。 - ダウンロードした
vcxsrv-64.1.20.9.0.installer.exe
ファイルを実行します。 Next
ボタンをクリックします。Install
ボタンをクリックします。Close
ボタンをクリックします。VcXsrv
のインストールが終了します。
VcXsrvを起動
スタートメニュー
を開きます。VcXsrv
フォルダを開き、XLaunch
アイコンをクリックします。- X Clientの開き方を指定します。ここでは、
Multiple windows
を選択してみます。 Display number
を-1
にします。次へ
ボタンをクリックします。- X Server起動時にX Clientを開くか指定します。ここでは、
Start no client
を選択してみます。 次へ
ボタンをクリックします。Extra settings
ダイアログが開きます。ここでは、次の通りに設定してみます。項目 設定 Clipboard チェックする + Primary Selection チェックする Native opengl チェックする Disable access control チェックする Additional parameters for VcXsrv <空欄> 次へ
ボタンをクリックします。完了
ボタンをクリックします。VcXsrv
が起動し、常駐します。タスクトレイ
を開くと、XLaunch
アイコンが表示されます。ここで、<ホスト名>:0.0
のコロンより右側がディスプレイ番号です。- このとき、ウイルス対策ソフトが
VcXsrv
を検知して、起動する場合があります。ファイヤーウォールを設定変更してください。
ファイヤーウォールを設定変更
- Windowsのファイヤーウォール設定を確認してください。インストールされているウイルス対策アプリケーションによって設定画面が異なるため、詳細は割愛します。
6000 + ディスプレイ番号
のポートが開いていることを確認します。6000
番ポートが開いていれば問題ありません。(ディスプレイ番号が:1.0
の場合は6000-6001
)
使用方法
1.WindowsのIPアドレスを確認します。localhost
、127.0.0.1
ではなく、WSL(または、Dockerコンテナ)から見たWindowsのIPアドレスです。
2.WSL(または、Dockerコンテナ)のターミナルで、DISPLAY
環境変数に、IPアドレス
、ディスプレイ番号
を設定します。
export DISPLAY=192.168.10.11:0.0 echo $DISPLAY
3.WSL(または、Dockerコンテナ)のターミナルで、xeyes
等のX11アプリケーションを実行します。
xeyes
4.Windowsのデスクトップ上に、xeyes
等のX11アプリケーションが表示されます。
5.タスクトレイ
のXLaunch
アイコンにマウスオーバーすると、1 client
と表示されていますことが分かります。
さいごに
WSL2のGUI対応(WSLg)に期待していますが、現状でも、Windows上でX11アプリケーションを表示させることができます。
ポートフォワーディングを設定すれば、EC2上で稼働するX11アプリケーションの画面を、手元にあるWindowsのデスクトップに表示させることが可能です。
その座をVNC
に奪われてしまっているようにも思いますが、X Server/Client
は健在です。